﻿/*!
 * @file mpu9250_lpspi_edma.h
 * @author suyong_yq@126.com
 */

#ifndef __MPU9250_LPSPI_EDMA_H__
#define __MPU9250_LPSPI_EDMA_H__

#include "hal_lpspi.h"
#include "hal_edma.h"
#include "hal_dmamux.h"

/*
一开始就使用SPI_DMA的传输方式，在DMA传输中断服务程序中设计状态机。
状态机对MPU9250的处理状态决定了在DMA传输中断服务程序中的程序执行流程。
*/

/*!
 * @brief 定义操作MPU9250的传输状态机
 */
typedef enum
{
    eMPU9250_State_UnInit = 0U, /* 未初始化，初始状态 */

} MPU9250_State_T;

/* 读出传感器的值 */
typedef struct
{
    uint32_t x, y, z;
} MPU9250_SensorInfo_T;

typedef struct
{
    LPSPI_EDMA_Config_T     *SpiDmaConfigPtr; /* 指向配置信息，便于定位硬件 */
    MPU9250_State_T      CurState; /* 操作流程当前所处的状态 */
    MPU9250_SensorInfo_T *SensorInfoPtr; /* 指向用户定义的一块存储区，保存传感器采样结果 */
} MPU9250_Handler_T;



/* 初始化EDMA */
void MPU9250_Init(
    MPU9250_Handler_T        *handler,
    const SPI_DMA_Config_T   *spiDmaConfigPtr,
    MPU9250_SensorInfo_T     *sensorInfoPtr);



#endif /* __MPU9250_LPSPI_EDMA_H__ */
